feat: add Dreo 712S support, light platform, protocol extensions, example config - #2
feat: add Dreo 712S support, light platform, protocol extensions, example config#2liamjvs wants to merge 1 commit into
Conversation
The 712S (ESP32-C3) is a fan + main CCT light + locally-driven ambient RGB unit. Its module is already an ESP32-C3, so unlike the HTF018S it needs no hardware swap - just a stock-compatible partition table. Component changes: - New light platform (components/dreo/light) for datapoint-backed lights: switch/brightness/color_temperature datapoints, configurable mired range, and the stock "higher = cooler" colour-temp inversion. Guards against echoing MCU-sourced updates back to the MCU. - Protocol: parse string datapoints (type 0x03), accept 1/2/4-byte integers rather than 4-byte only, and treat 0x0E as the remote/panel button event it actually is (previously ignored as undecipherable). Adds the 0x09 version query and 0x03 wifi-status frames some models expect during sync. - New hub options, all defaulting to existing behaviour: startup_heartbeat_ interval, max_init_retries, query_version_on_sync, wifi_status_on_sync, periodic_wifi_status, button_event_repeat_guard, local_datapoints, and an on_button_event trigger. Adds diagnostic accessors (last rx/tx frame, status, seen datapoints) for probing new models. - Fan: speed_mappings for models whose stock levels are not 1..n, and configurable direction values for models using something other than 0/1. - Malformed datapoints now skip that entry instead of abandoning the rest of the frame, and zero-length payloads no longer read past the buffer. The 712S example, model notes and partition table live in docs/dreo-712s/. Adds a .gitignore, which the repo did not previously have. Compile-tested with ESPHome 2026.7.3: both the new 712S example and the existing HTF018S example build clean against these component changes.
|
Hi @liamjvs — I've opened #3 with a narrowly scoped compatibility fix for variable-width integer datapoints and report continuation. It overlaps part of this PR's changes in #3 adds signed 1-, 2- and 4-byte decoding, observed-width writes, unknown-type continuation, type-safe select and binary-sensor handling, Python decoder coverage, and an actual-source regression suite. It has also been validated against an MBL01-based Dreo device. Would you and @davidc be comfortable merging that shared compatibility fix first, then rebasing this PR and dropping or reconciling the overlapping parser and select changes? The 712S light platform, string support, button/version/Wi-Fi handling, fan mappings, partition table and example remain independent parts of this PR. I'm happy to help identify the exact overlapping hunks during the rebase. |
The 712S (ESP32-C3) is a fan + main CCT light + locally-driven ambient RGB unit. Its module is already an ESP32-C3, so unlike the HTF018S it needs no hardware swap - just a stock-compatible partition table.
Write up is here.
Component changes:
The 712S example, model notes and partition table live in docs/dreo-712s/. Adds a .gitignore, which the repo did not previously have.
Compile-tested with ESPHome 2026.7.3: both the new 712S example and the existing HTF018S example build clean against these component changes.